﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CuaHangMayTinh.BusinessEntities;
using CuaHangMayTinh.BusinessLogicLayer;
using CuaHangMayTinh.Utilities;

namespace CuaHangMayTinh.PresentationLayer
{
    //chu y khong co them may cai linh tinh nhu so luong va tinh trang
    /// <summary>
    /// model mặt hàng 
    /// </summary>
    public partial class FormModelMatHangThem : Form,IFormThemTV<ModelMatHangEntity>
    {
        /// <summary>
        /// chứa nội dung text lỗi
        /// </summary>
        private string Textloi = string.Empty;

        /// <summary>
        /// đối tượng model mặt hàng
        /// </summary>
        private ModelMatHangEntity entity;

        /// <summary>
        /// phương thức khởi tạo lúc thêm
        /// </summary>
        public FormModelMatHangThem()
        {
            InitializeComponent();
            cbb_tinhtrang.Enabled = false;
            this.Text = "Thêm mới model mặt hàng";
        }

        /// <summary>
        /// phương thức khởi tạo lúc cập nhật
        /// </summary>
        /// <param name="entity"></param>
        public FormModelMatHangThem(ModelMatHangEntity entity)
        {
            InitializeComponent();
            this.entity = entity;
            cbb_tinhtrang.Enabled = true;
            this.Text = "Cập nhật model mặt hàng"+entity.Model;
        }

        /// <summary>
        /// thêm click
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_themmoi_click(object sender, EventArgs e)
        {
            if (CheckInput())
            {
                if (entity == null)
                {
                    ModelMatHangEntity modelMatHangEntity = GetEntity();
                    if (ModelMatHangManager.Insert(modelMatHangEntity, ref Textloi) > 0)
                    {
                        MessageBox.Show("Thêm thành công");
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show(Textloi);
                    }
                }
                else
                {
                    ModelMatHangEntity modelMatHangEntity = GetEntity();
                    modelMatHangEntity.MaModelMH = this.entity.MaModelMH;
                    if (ModelMatHangManager.UpDate(modelMatHangEntity, ref Textloi))
                    {
                        MessageBox.Show("Cập nhật thành công!");
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show(Textloi);
                    }
                }
            }
        }

        /// <summary>
        /// kiểm tra thông tin người dùng nhập
        /// </summary>
        /// <returns></returns>
        public bool CheckInput()
        {
            if (StringHelper.IsNullorEmpty(txt_model.Text))
            {
                MessageBox.Show("Bạn chưa nhập tên model vào !");
                return false; 
            }
            if (StringHelper.IsNullorEmpty(txt_hangsx.Text))
            {
                MessageBox.Show("Bạn chưa nhập hãng sản xuất vào !");
                return false;
            }
            if (StringHelper.IsNullorEmpty(txt_nuocsx.Text))
            {
                MessageBox.Show("Bạn chưa nhập nước sản xuất vào !");
                return false;
            }
            if (StringHelper.IsNullorEmpty(txt_cauhinh.Text))
            {
                MessageBox.Show("Bạn chưa nhập cấu hình vào !");
                return false;
            }
            return true;
        }

        /// <summary>
        /// hàm xóa input
        /// </summary>
        public void XoaTrang()
        {
            this.txt_hangsx.Clear();
            this.txt_cauhinh.Clear();
            this.cbb_donvitinh.SelectedIndex = 0;
            this.cbb_loaimathang.SelectedIndex = 0;
            this.cbb_tinhtrang.SelectedIndex = 0;
            this.txt_model.Clear();
            this.txt_nuocsx.Clear();
            this.integerInput_baohanh.Value = 0;
        }

        /// <summary>
        /// xóa trằng click
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_xoatrang_click(object sender, EventArgs e)
        {
            XoaTrang();
        }

        /// <summary>
        /// hàm lấy đối tượng model mặt hàng entity từ form
        /// </summary>
        /// <returns></returns>
        public ModelMatHangEntity GetEntity()
        {
            ModelMatHangEntity entity = new ModelMatHangEntity();
            entity.HangSX = this.txt_hangsx.Text;
            entity.CauHinh = this.txt_cauhinh.Text;
            entity.MaDonViTinh = (int)cbb_donvitinh.SelectedValue;
            entity.MaLoaiMH = (int)this.cbb_loaimathang.SelectedValue;
            entity.Model = this.txt_model.Text;
            entity.NuocSX = this.txt_nuocsx.Text;
            entity.BaoHanh = this.integerInput_baohanh.Value;
            return entity;
        }

        /// <summary>
        /// lay entity bỏ lên form
        /// </summary>
        /// <param name="entity"></param>
        public void SetEntity(ModelMatHangEntity entity)
        {
            this.txt_hangsx.Text = entity.HangSX;
            this.txt_cauhinh.Text = entity.CauHinh;
            this.cbb_donvitinh.SelectedValue = entity.MaDonViTinh;
            this.cbb_loaimathang.SelectedValue = entity.MaLoaiMH;
            this.txt_model.Text = entity.Model;
            this.txt_nuocsx.Text = entity.NuocSX;
            this.integerInput_baohanh.Value = entity.BaoHanh;
            this.cbb_tinhtrang.SelectedValue = entity.TinhTrang;
        }

        private void FormModelMatHangThem_Load(object sender, EventArgs e)
        {
            cbb_tinhtrang.DataSource = createTableTinhTrang();
            cbb_tinhtrang.DisplayMember = "GiaTri";
            cbb_tinhtrang.ValueMember = "STT";
            cbb_loaimathang.DataSource = LoaiMatHangManager.Find_All();
            cbb_loaimathang.DisplayMember = "TenLoaiMH";
            cbb_loaimathang.ValueMember = "MaLoaiMH";
            cbb_donvitinh.DataSource = DonViTinhManager.Find_All();
            cbb_donvitinh.DisplayMember = "DonVi";
            cbb_donvitinh.ValueMember = "MaDonViTinh";
            integerInput_baohanh.Value = 0;
            if (entity != null)
            {
                SetEntity(entity);
                btn_Them.Text = "Cập nhật";
            }
            else
            {
                btn_Them.Text = "Thêm";
            }
        }

        private DataTable createTableTinhTrang()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("STT", typeof(int));
            dt.Columns.Add("GiaTri", typeof(string));
            var row = dt.NewRow();
            row[0] = 0;
            row[1] = "Đang bị khóa";
            dt.Rows.Add(row);
            var row1 = dt.NewRow();
            row1[0] = 1;
            row1[1] = "Đang được bán";
            dt.Rows.Add(row1);
            var row2 = dt.NewRow();
            row2[0] = 2;
            row2[1] = "Đang hết hàng";
            dt.Rows.Add(row2);
            return dt;
        }
    }
}
